/*
题目: 大小为 K 且平均值大于等于阈值的子数组数目
给你一个整数数组 arr 和两个整数 k 和 threshold 。

请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。
https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/
 */
public class NumOfSubarrays {
    // 前缀和 : 长度为 k 的子数组和为 k * avg
    public int numOfSubarrays(int[] arr, int k, int avg) {
        int n = arr.length;
        int src = 0;

        int[] prefix = new int[n];
        prefix[0] = arr[0];
        for (int i = 1; i < n; i++)
            prefix[i] = prefix[i - 1] + arr[i];

        int target = k * avg;
        if (prefix[k - 1] >= target)    src ++;

        for (int i = k; i < n; i++)
            if (prefix[i] - prefix[i - k] >= target)    src ++;

        return src;
    }
}
